-- FUNCTION: public.widget_Table_OnlineAppointmentDashboard(date, integer, integer)

-- DROP FUNCTION IF EXISTS public."widget_Table_OnlineAppointmentDashboard"(date, integer, integer);

CREATE OR REPLACE FUNCTION public."widget_Table_OnlineAppointmentDashboard"(
	"fromDate" date DEFAULT NULL::date,
	"referenceId" integer DEFAULT NULL::integer,
	"locationId" integer DEFAULT NULL::integer)
    RETURNS TABLE("Salutation" character varying, "PatientName" text, "UMRNo" character varying, "AppointmentNo" character varying, "AppointmentTime" text, "AppointmentId" integer, "SpecializationName" character varying) 
    LANGUAGE 'plpgsql'
    COST 100
    VOLATILE PARALLEL UNSAFE
    ROWS 1000

AS $BODY$
begin
return query

select Pa."Salutation", Pa."FullName" as "PatientName",Pa."UMRNo",
apt."AppointmentNo" ,-- apt."AppointmentTime"::text
 TO_CHAR(apt."AppointmentTime", 'hh12:mi AM'),
 apt."AppointmentId",s."SpecializationName"
from "Appointment" apt
join "ConsultationType" AT on AT."ConsultationTypeId" =apt."ConsultationTypeId"
join "Patient" Pa on Pa."PatientId"  = apt."PatientId" 
join "Provider" Pr on Pr."ProviderId"  = apt."ProviderId" 
join "Specialization" s on s."SpecializationId" = ANY (Pr."Specializations")
where apt."AppointmentDate"::date="fromDate" and apt."Active" is true and AT."ConsultationTypeId" =2
and case when "referenceId" is null then 1=1 else apt."ProviderId"= "referenceId" end
and case when "locationId" is null then 1=1 else apt."LocationId"= "locationId" end 
;

end
$BODY$;

ALTER FUNCTION public."widget_Table_OnlineAppointmentDashboard"(date, integer, integer)
    OWNER TO postgres;
